package cn.sstech.IM.webserver.user.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.sstech.IM.webserver.user.model.Group;
import cn.sstech.IM.webserver.user.model.ImGroupUserData;
import cn.sstech.IM.webserver.user.model.NoticeEntity;
import cn.sstech.IM.webserver.user.model.UserInfoEntity;
import cn.sstech.IM.webserver.user.model.UserMessageEntity;

public interface UserChatDao {

	Integer isGroupManager(@Param("group") Group group,@Param("userId") Long userId);

	void delAllGroupMember(@Param("group")Group group);

	void delGroup(@Param("group")Group group);

	void addGroup(@Param("group")Group group);

	void addGroupMember(@Param("group")Group group);

	List<Group> getGroupInfoByUserId(@Param("userId")Long userId);

	void delGroupMember(@Param("group")Group group);
	
	List<Group> getGroupBrefInfoByAccountId(@Param("accountId") String accountId);

	void modifyOfflineTime(@Param("userId")  String userId);

	public List<UserMessageEntity> getGroupOfflineMessageList(@Param("userId") Long userId );

	List<ImGroupUserData> getSysServerGroups();

	void noticeAdd(@Param("noticeEntity") NoticeEntity noticeEntity);

	List<NoticeEntity> getNoticeByUserId(@Param("userId") Long userId);

	List<UserInfoEntity> getAllManagerByGroupId(@Param("groupId") Long groupId);

	void noticeAddAll(@Param("noticeEntity") List<NoticeEntity> noticeEntity);

	void noticeReaded(@Param("notice") NoticeEntity notice);

	NoticeEntity getNoticeById(@Param("noticeId") Long noticeId);

	void joinGroupNoticeReaded(@Param("notice") NoticeEntity notice);

	void delFriend(@Param("noticeEntity") NoticeEntity noticeEntity);

	void delGroupMemberByNotice(@Param("noticeEntity") NoticeEntity noticeEntity); 
}
